Launch installed apps from independent Scenes service - #2
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scenes currently owns remote connections through the legacy stream controller. This prevents it from coexisting cleanly with standalone Remote Desktops and can reclaim windows after a user moves them.
Add an independent scene service and an installed-app source identified by desktop ID and literal class/title. Scenes launches or reuses one matching window, validates its live identity in Lua, and places it once. Later moves, closes, and service restarts do not trigger a second placement or launch. The picker reads Remote Desktops' per-computer launcher metadata through the same app path.
Session recovery separates app-scene launch ownership from ordinary window recovery, preserves manual departures and extra windows, and restores app-only workspaces. Legacy scene files and host journals are retained for explicit migration; runtime deployment requires disconnecting/restoring active legacy sources first. Development deployment permits Remote Desktops' shared guard to remain held. Updated CLI, installer, loader, documentation, and recovery tests are included.
Validation: all local CI suites passed; ShellCheck and both modified QML files parsed successfully. Added 22 app/recovery tests, including real Unix socket/writer-lock isolation. Live MacBook validation passed initial zone placement, a workspace move across a scene-service restart, explicit reapplication without a new client PID/connection generation, and scene restoration without disconnecting the app. Test cleanup disconnected the client and completed host display restoration. The installed plugin was not replaced, and the original dirty checkout was preserved. Windows laptop streaming remains untested live; the native Windows policy check runs in GitHub CI.